﻿using ProyectoDeTesis.Controladores;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Telerik.WinControls.UI;

namespace ProyectoDeTesis.Vistas
{
    
    public partial class EstadoVuelos : Form
    {
        private ResultadoAlgoritmoController resultadoAlgoritmoController = new ResultadoAlgoritmoController();
        private List<ProyectoDeTesis.Vuelo> listaVuelos = new List<ProyectoDeTesis.Vuelo>();
        private List<ProyectoDeTesis.Vuelo> listaVuelosEnEspera = new List<ProyectoDeTesis.Vuelo>();
        private List<ProyectoDeTesis.Vuelo> listaVuelosEnProceso = new List<ProyectoDeTesis.Vuelo>();
        private List<ProyectoDeTesis.Vuelo> listaVuelosAtendido = new List<ProyectoDeTesis.Vuelo>();
        private List<ProyectoDeTesis.Vuelo> listaVuelosCancelado = new List<ProyectoDeTesis.Vuelo>();
        private VueloController vueloController = new VueloController();
        private SimulacionController simulacionController = new SimulacionController();
        private int pantalla_id = 17;
        public EstadoVuelos()
        {
            InitializeComponent();
            rdtpFechaInicial.Value = DateTime.Now.Date;
            rdtpFechaFinal.Value = DateTime.Now.Date;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            DateTime ahora = DateTime.Now;
            DateTime fecha_inicio = rdtpFechaInicial.Value;
            DateTime fecha_fin = rdtpFechaFinal.Value.AddDays(1);

            List<ResultadoAlgoritmo> listaResultadoAlgoritmo = resultadoAlgoritmoController.obtenerResultadosAlgoritmo(ahora.Date);

            List<ProyectoDeTesis.Vuelo> listaVueloResultadoAlgoritmo = new List<ProyectoDeTesis.Vuelo>();

            foreach (ResultadoAlgoritmo ra in listaResultadoAlgoritmo)
            {
                ProyectoDeTesis.Vuelo v = ra.Vuelo;

                if (v.estado != "Cancelado"){

                    if (ahora > ra.fin_abordaje)
                    {
                        v.estado = "Atendido";
                    }
                    else if (ra.inicio_abordaje >= ahora && ra.fin_abordaje <= ahora)
                    {
                        v.estado = "En Proceso";
                    }
                    listaVueloResultadoAlgoritmo.Add(v);
                }
            }

            vueloController.actualizarEstadoVuelos(listaVueloResultadoAlgoritmo);

            listaVuelos = vueloController.obtenerVuelosRangoFechas(fecha_inicio, fecha_fin);

            listaVuelosAtendido = listaVuelos.Where(c => c.estado == "Atendido").ToList();

            listaVuelosCancelado = listaVuelos.Where(c => c.estado == "Cancelado").ToList();

            listaVuelosEnEspera = listaVuelos.Where(c => c.estado == "En Espera").ToList();

            listaVuelosEnProceso = listaVuelos.Where(c => c.estado == "En Proceso").ToList();

            rgvVuelosAtendidos.DataSource = listaVuelosAtendido;
            rgvVuelosCancelados.DataSource = listaVuelosCancelado;
            rgvVuelosEnEspera.DataSource = listaVuelosEnEspera;
            rgvVuelosEnProceso.DataSource = listaVuelosEnProceso;

            formatearTabla(rgvVuelosAtendidos);
            formatearTabla(rgvVuelosCancelados);
            formatearTabla(rgvVuelosEnEspera);
            formatearTabla(rgvVuelosEnProceso);
        }

        public void formatearTabla(RadGridView rgvVuelos)
        {
 	        rgvVuelos.Columns[0].IsVisible = false;
            rgvVuelos.Columns[1].HeaderText = "Numero de vuelo";
            rgvVuelos.Columns[2].HeaderText = "Tipo de Avión";
            rgvVuelos.Columns[3].HeaderText = "Tipo de vuelo";
            rgvVuelos.Columns[4].IsVisible = false;
            rgvVuelos.Columns[5].HeaderText = "Destino";
            rgvVuelos.Columns[6].HeaderText = "Nombre de Aeropuerto";
            rgvVuelos.Columns[7].HeaderText = "Fecha de Salida";
            rgvVuelos.Columns[8].HeaderText = "Hora de Salida";
            rgvVuelos.Columns[9].HeaderText = "Fecha de LLegada";
            rgvVuelos.Columns[10].HeaderText = "Hora de Llegada";
            rgvVuelos.Columns[11].IsVisible = false;
            rgvVuelos.Columns[12].IsVisible = false;
            rgvVuelos.Columns[13].IsVisible = false;
            rgvVuelos.Columns[14].IsVisible = false;
            rgvVuelos.Columns[15].IsVisible = false;
            rgvVuelos.Columns[16].IsVisible = false;
            rgvVuelos.Columns[17].IsVisible = false;
            rgvVuelos.Columns[18].IsVisible = false;
            rgvVuelos.Columns[19].IsVisible = false;
            rgvVuelos.Columns[1].Width = 80;
            rgvVuelos.Columns[2].Width = 80;
            rgvVuelos.Columns[3].Width = 80;
            rgvVuelos.Columns[5].Width = 140;
            rgvVuelos.Columns[6].Width = 140;
            rgvVuelos.Columns[7].Width = 90;
            rgvVuelos.Columns[8].Width = 90;
            rgvVuelos.Columns[9].Width = 90;
            rgvVuelos.Columns[10].Width = 90;
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            rdtpFechaInicial.Value = DateTime.Now.Date;
            rdtpFechaFinal.Value = DateTime.Now.Date;
        }
    }
}
